Automatic Construction of Hoare Proofs from Abstract Interpretation Results
نویسندگان
چکیده
Interpretation Results Sunae Seo, Hongseok Yang, and Kwangkeun Yi 1 Department of Computer Science, Korea Advanced Institute of Science and Technology [email protected] 2 MICROS Research Center, Korea Advanced Institute of Science and Technology [email protected] 3 School of Computer Science and Engineering, Seoul National University [email protected] Abstract. By combining program logic and static analysis, we present an automatic approach to construct program proofs to be used in ProofCarrying Code. We use Hoare logic in representing the proofs of program properties, and the abstract interpretation in computing the program properties. This combination automatizes proof construction; an abstract interpretation automatically estimates program properties (approximate invariants) of our interest, and our proof-construction method constructs a Hoare-proof for those approximate invariants. The proof-checking side (code consumer’s side) is insensitive to a specific static analysis; the assertions in the Hoare proofs are always first-order logic formulas for integers, into which we first compile the abstract interpreters’ results. Both the property-compilation and the proof construction refer to the standard safety conditions that are prescribed in the abstract interpretation framework. We demonstrate this approach for a simple imperative language with an example property being the integer ranges of program variables. We prove the correctness of our approach, and analyze the size complexity of the generated proofs. By combining program logic and static analysis, we present an automatic approach to construct program proofs to be used in ProofCarrying Code. We use Hoare logic in representing the proofs of program properties, and the abstract interpretation in computing the program properties. This combination automatizes proof construction; an abstract interpretation automatically estimates program properties (approximate invariants) of our interest, and our proof-construction method constructs a Hoare-proof for those approximate invariants. The proof-checking side (code consumer’s side) is insensitive to a specific static analysis; the assertions in the Hoare proofs are always first-order logic formulas for integers, into which we first compile the abstract interpreters’ results. Both the property-compilation and the proof construction refer to the standard safety conditions that are prescribed in the abstract interpretation framework. We demonstrate this approach for a simple imperative language with an example property being the integer ranges of program variables. We prove the correctness of our approach, and analyze the size complexity of the generated proofs.
منابع مشابه
Off-line Semantic Slicing From Abstract Interpretation Results
One proposal for automatic construction of proofs about programs is to combine Hoare logic and abstract interpretation. Constructing proofs is in Hoare logic. Discovering programs’ invariants is done by abstract interpreters. One problem of this approach is that abstract interpreters often compute invariants that are not needed for the proof goal. The reason is that the abstract interpreter doe...
متن کاملTowards Automatic Stability Analysis for Rely-Guarantee Proofs
The Rely-Guarantee approach is a well-known compositional method for proving Hoare logic properties of concurrent programs. In this approach, predicates in the proof must be proved invariant (or stable) under interference from the environment. We describe a framework, and a prototype implementation, for automatically detecting and repairing instability in such proofs. The method uses a combinat...
متن کاملAutomatic Coq Proofs Generation from Static Analyzers by Lightweight Instrumentation
This paper deals with program verification and more precisely with the question of how to provide verifiable evidence that a program verifies certain semantics properties. Program processing tools such as compiler or static analyzers are complex pieces of software which may contain errors. The idea of using analyzers as guessing algorithms and proving the discovered properties by independent me...
متن کاملProof of Imperative Programs in Type TheoryJean - Christophe
Proofs of correctness of imperative programs are traditionally done in rst order frameworks derived from Hoare logic 8]. On the other hand, correctness proofs of purely functional programs are almost always done in higher order logics. In particular, the realizability 10] allow to extract correct functional programs from constructive proofs of existential formulae. In this paper, we establish a...
متن کامل